Ubuntu安装ROS2并编写自己的程序

您所在的位置:网站首页 ubuntu 命令行打开文件 Ubuntu安装ROS2并编写自己的程序

Ubuntu安装ROS2并编写自己的程序

2023-05-25 09:51| 来源: 网络整理| 查看: 265

Ubuntu安装ROS2并编写自己的程序_ros2

根据官方Distributions说明,Dashing Diademata为Ubuntu 18.04上支持最长的版本,下一个长期版本目标系统为 Ubuntu 20.04,因此作为学习的话,建议安装该版本,同时经过简单测试,当前ROS2对一般开发者并不算太友好,很多功能包也没有,不建议作为主力开发使用。

ROS2架构说明可参考ROS2探索总结(六)——迎接ROS2.0时代的到来

一、安装设置本地环境sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8设置软件源sudo apt update && sudo apt install curl gnupg2 lsb-release curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'安装sudo apt update完整版sudo apt install ros-dashing-desktop基础版,无GUI工具sudo apt install ros-dashing-ros-base安装argcomplete(可选) 用于ROS2的命令行工具(ROS 2命令行工具使用argcomplete自动完成。因此,如果您想要自动完成,安装argcomplete是必要的。)sudo apt install python3-argcomplete配置环境

若多版本共存,或以ros1为主力开发,不要写入到.bashrc,使用ros2前在终端手动输入加载ros2环境

source /opt/ros/dashing/setup.bash

单版本使用,或以ros2为主力开发

echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc安装RMW implementationRMW implementation为中间件,默认使用FastRTPSsudo apt update sudo apt install ros-dashing-rmw-opensplice-cpp # for OpenSplice sudo apt install ros-dashing-rmw-connext-cpp # for RTI Connext (requires license agreement)

切换中间件

RMW_IMPLEMENTATION=rmw_opensplice_cpp: OpenSplice

RMW_IMPLEMENTATION=rmw_connext_cpp: RTI Connext(Bouncy新增)

安装ros1_bridge

ros1_bridge用于ros1和ros2通讯,使ros2可以使用ros1的功能包。

sudo apt update sudo apt install ros-dashing-ros1-bridgeROS2测试ros2 run demo_nodes_cpp talker ros2 run demo_nodes_cpp listener

Ubuntu安装ROS2并编写自己的程序_CMake_02

二、使用安装colcon 在Bouncy版本后,ROS2采用colcon替代 ament_tools 用于程序编译。sudo apt install python3-colcon-common-extensions创建工作空间mkdir -p ~/ros2_ws/src cd ~/ros2_ws

当前目录结构(编译后会自动生成其余目录)

. └── src 1 directory, 0 files创建功能包 这里直接clone例程。git clone https://github.com/ros2/examples src/examples

切换版本到Bouncy

cd ~/ros2_ws/src/examples/ git checkout $ROS_DISTRO cd ~/ros2_ws

当前目录结构

. └── src └── examples ├── CONTRIBUTING.md ├── LICENSE ├── rclcpp ├── rclpy └── README.md 4 directories, 3 files

手动创建功能包

usage: ros2 pkg create [-h] [--package_format {2,3}] [--description DESCRIPTION] [--license LICENSE] [--destination-directory DESTINATION_DIRECTORY] [--build-type {cmake,ament_cmake}] [--dependencies DEPENDENCIES [DEPENDENCIES ...]] [--maintainer-email MAINTAINER_EMAIL] [--maintainer-name MAINTAINER_NAME] [--cpp-node-name CPP_NODE_NAME] [--cpp-library-name CPP_LIBRARY_NAME] package_name编译colcon build --symlink-install

完整目录结构

. ├── build ├── install ├── log └── src 4 directories, 0 filessrc,程序目录build,编译的缓存信息和中间文件install,编译输出文件目录log,colcon调用的各种日志信息

当前目录结构(编译后会自动生成其余目录)

Ubuntu安装ROS2并编写自己的程序_ros2_03

Ubuntu安装ROS2并编写自己的程序_Python_04

然后回到工作空间下使用“colcon build”编译:

Ubuntu安装ROS2并编写自己的程序_linux_05

编译完成的功能包都会放置在install文件夹下,可以看下有没有顺利生成可执行文件。

加载环境 编译完成后,在install目录下会生成配置文件setup.bash,运行该文件可以加载运行所需相关环境,确保在运行节点前在终端运行该文件。source install/setup.bash测试

启动订阅节点

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

启动发布节点

ros2 run examples_rclcpp_minimal_publisher publisher_member_function

Ubuntu安装ROS2并编写自己的程序_ros2 创建自己功能包_06

三、创建自己ROS2包3.1 创建功能包

我们首先创建一个dev_ws/src的文件来存放我们自己的包

mkdir -p ~/dev_ws/src

打开终端后进入到dev_ws/src路径下:

cd ~/dev_ws/src

然后就可以使用如下语法来创建功能包了(以下二选一): CMake包:

ros2 pkg create --build-type ament_cmake

Python包:

ros2 pkg create --build-type ament_python

创建功能包的指令还允许设置节点名,自动生成一个helloworld的例程代码(以下二选一)。

CMake包:

ros2 pkg create --build-type ament_cmake --node-name my_node my_package

Python包:

ros2 pkg create --build-type ament_python --node-name my_node my_package

运行成功后就可以在src中看到一个新的文件夹叫做my_package,同时在终端中有很多日志信息:

CMake包:

Ubuntu安装ROS2并编写自己的程序_linux_07

Python包:

Ubuntu安装ROS2并编写自己的程序_ros2_08

创建功能包的指令还可以设置依赖项。

CMake包:

ros2 pkg create --dependencies [deps] --build-type ament_cmake

Python包:

ros2 pkg create --dependencies [deps] --build-type ament_python3.2 编译功能包

接下来进入编译流程,一定要将终端cd到dev_ws的路径下来:

cd ~/dev_ws

然后就可以编译啦:

colcon build

这个命令会编译工作空间中的所有功能包,如果只想编译某一个包的话,可以这样:

colcon build --packages-select my_package

Ubuntu安装ROS2并编写自己的程序_ros2_09

3.3 设置环境变量

打开一个新的终端,运行下工作空间的环境变量,这样才能让该终端找到新创建的包:

source install/setup.bash

接下来就可以在该终端中愉快的运行新建的功能包了。

3.4 运行功能包中的节点

在终端中使用如下命令即可运行新建功能包的节点啦:

ros2 run my_package my_node

终端中可以看到:

CMake包:

Ubuntu安装ROS2并编写自己的程序_ros2 创建自己功能包_10

Python包:

Ubuntu安装ROS2并编写自己的程序_ros2 创建自己功能包_11

3.5 功能包里有什么

不管你是用CMake还是python创建的包,打开看一下,里边有哪些默认的文件:

CMake包:

Ubuntu安装ROS2并编写自己的程序_Python_12

src中有一个 my_node.cpp 文件,就是实现上边看到hello world的例程代码。Python包:

Ubuntu安装ROS2并编写自己的程序_linux_13

3.6 修改package.xml文件

新建功能包中的package.xml文件需要我们手动完善一下,包括其中的功能包描述、版本信息、使用许可证等,默认都有加“TODO”标志。

CMake包:

Ubuntu安装ROS2并编写自己的程序_linux_14

Python包:

Ubuntu安装ROS2并编写自己的程序_CMake_15

完善以上描述信息、许可证和作者邮箱,关于许可证的详细介绍可以参考: https://opensource.org/licenses/alphabetical

除了这些基本信息之外,还可以看到不少以“ _depend”结尾的标签,这些就是用来描述功能包依赖的,如果我们在编写代码过程中新增加了什么依赖,都可以手动添加到这里来。

如果使用的是Python包,还需要多修改一个文件setup.py:

Ubuntu安装ROS2并编写自己的程序_linux_16

其中第16~19行的内容需要修改的和package.xml文件一致。

OK,这就是ROS2中创建功能包的方法。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3